package com.gaga.metadata.entity.base;

import com.gaga.metadata.common.enums.ColumnType;
import com.gaga.metadata.common.enums.SqlFunctionType;
import lombok.Data;

import java.io.Serializable;

/**
 * @author liujia
 * @version 1.0
 * @date 2022/12/12 17:41
 */
@Data
public class BaseColumn implements Serializable {

    /**
     * 所属表ID
     */
    private String tableId;

    /**
     * 列名称
     */
    private String name;


    /**
     * 旧的列名称
     */
    private String oldName;


    /**
     * 列名称是否转为小些
     */
//    private Boolean isNameLowerCase = true;

    /**
     * 列类型
     */
    private String dbType;
    /**
     * 备注
     */
    private String comment;
    /**
     * 是否主键
     */
    private Boolean keyFlag = false;
    /**
     * 主键自增
     */
    private Boolean autoIncrement;
    /**
     * 默认值
     */
    private String defaultValue;
    /**
     * 是否允许为 NULL true 可以为空 false 不可以为空
     */
    private Boolean isNullable = true;
    /**
     * java类型
     */
    private ColumnType columnType;
    /**
     * 字段序号
     */
    private String position;
    /**
     * 精度 varchar(200)
     */
    private Integer precision;
    /**
     * 小数位
     */
    private Integer scale = 0;
    /**
     * 字符集
     */
    private String characterSet;
    /**
     * 排序规则
     */
    private String collation;

    /**
     * 关联表的名称或者别名
     */
    private String linkTableNameOrAliasName;

    /**
     * 列的别名
     */
    private String aliasName;

    /**
     * 列的别名是否转为小些
     */
//    private Boolean isAliasNameLowerCase = true;

    private SqlFunctionType sqlFunctionType;

    private Boolean needGroupBy = false;
    /**
     * 值
     */
    private String value;

    /**
     * 来源列
     */
    private String sourceColumnName;

    /**
     * 来源列关联表的名称或者别名
     */
    private String sourceLinkTableNameOrAliasName;

    /**
     * 爸爸列
     */
    private String pid;

    /**
     * 空值映射
     */
    private String nullMapperValue;

}
